#include "timerbtn.h"
#include <QMouseEvent>
#include <QDebug>

TimerBtn::TimerBtn(QWidget *parent)
    : QPushButton(parent)
    , _counter(10)
{
    _timer = new QTimer(this); // 利用对象树机制析构掉QTimer对象

    // 连接定时器时间到（1s）信号：计数结束后，重置计数器，按钮恢复可用
    connect(_timer, &QTimer::timeout, this, [this](){
        _counter --;
        if (_counter <= 0) {
            _timer->stop();
            _counter = 10;
            this->setText("获取");
            this->setEnabled(true);
            return;
        }
        this->setText(QString::number(_counter));
    });
}

TimerBtn::~TimerBtn()
{
    _timer->stop();
}

void TimerBtn::mouseReleaseEvent(QMouseEvent *e)
{
    // 处理鼠标左键释放事件：按钮不可用，显示等待时间，设置定时器
    if (e->button() == Qt::LeftButton) {
        qDebug() << "TimerBtn was released!";
        this->setEnabled(false);
        this->setText(QString::number(_counter));
        _timer->start(1000); // 1000ms
        emit clicked();
    }
    // 调用基类的mouseReleaseEvent以保证正常的事件处理（如点击效果）
    QPushButton::mouseReleaseEvent(e);
}
